package org.dromara.business.domain.bo;

import org.dromara.business.domain.Video;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

/**
 * 视频基础信息业务对象 t_video
 *
 * @author Hao Tong Xue
 * @date 2025-04-21
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Video.class, reverseConvertGenerate = false)
public class VideoBo extends BaseEntity {

    /**
     * 视频 ID
     */
    @NotNull(message = "视频 ID不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 视频标题
     */
    @NotBlank(message = "视频标题不能为空", groups = { AddGroup.class, EditGroup.class })
    private String title;

    /**
     * 视频简介
     */
    private String description;

    /**
     * 视频文件 URL
     */
    @NotNull(message = "视频文件 id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long fileId;

    /**
     * 分辨率（如 1080p、720p）
     */
//    @NotBlank(message = "分辨率（如 1080p、720p）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String resolution;

    /**
     * 视频格式（mp4, flv, avi 等）
     */
//    @NotBlank(message = "视频格式（mp4, flv, avi 等）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String videoFormat;

    /**
     * 文件大小（字节）
     */
    @NotNull(message = "文件大小（字节）不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long size;

    /**
     * 封面图片 id
     */
    @NotNull(message = "封面图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long coverId;

    /**
     * 所属合集id
     */
    private Long collectionId;

    /**
     * 视频分区 ID
     */
    @NotNull(message = "视频分区 ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long categoryId;

    /**
     * 视频时长（秒）
     */
//    @NotNull(message = "视频时长（秒）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String duration;

    /**
     * 视频类型：0-自制，1-转载
     */
    private Integer videoType;

    /**
     * 转载来源信息（仅当 video_type=1 时有值）
     */
    private String sourceInfo;

    /**
     * 二创设置：0-否，1-是
     */
    private Integer isRemix;

    /**
     * 可见范围：0-公开，1-私密，2-仅粉丝可见
     */
    private Integer visibility;

    /**
     * 声明与权益信息
     */
    private String copyrightInfo;

    /**
     * 是否关闭弹幕：0-否，1-是
     */
    private Integer disableDanmaku;

    /**
     * 是否关闭评论：0-否，1-是
     */
    private Integer disableComment;

    /**
     * 是否开启精选评论：0-否，1-是
     */
    private Integer enableFeaturedComments;

    /**
     * 视频状态：0-草稿,1-待审核,2-已发布,3-下架
     */
    private Integer videoStatus;

    /**
     * 播放次数
     */
    private Integer playCount;

    /**
     * 弹幕数量
     */
    private Integer danmakuCount;

    /**
     * 评论数量
     */
    private Integer commentCount;

    /**
     * 点赞数量
     */
    private Integer likeCount;

    /**
     * 投币数量
     */
    private Integer coinCount;

    /**
     * 收藏数量
     */
    private Integer favoriteCount;

    /**
     * 分享次数
     */
    private Integer shareCount;

    /**
     * 备注
     */
    private String remark;

    /**
     * 操作类型 1-点赞 2-投币 3-收藏 4-分享
     */
    private Integer operateType;

    /**
     * 投币时，是否同时点赞 0-是 1-否
     */
    private Integer coinWhitLikeStatus;

}
